// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/19/2014 7:45:57 PM				
// -----------------------------

#ifndef _IInputLayout_h
#define _IInputLayout_h

#include "DxCommon.h"

namespace DxLib
{

	class IRenderDevice;
	class IVertexShader;

	struct InputElement
	{
		UInt32		SemanticIndex;
		const char*	SemanticName;
		Format		Format;
		InputClass	InputClass;
		UInt32		InstanceStep;
	};

	class DXLIB IInputLayout
	{
	public:
		// Create the Interface from a Vertex Shader
		static IInputLayout*	Create(IRenderDevice* lpDevice, IVertexShader* lpShader);
		// Create the Interface from Input Elements
		static IInputLayout*	Create(IRenderDevice* lpDevice, IVertexShader* lpShader, InputElement* lpElements, UInt32 elementCount);

		// Release the Interface
		virtual void	Release() = 0;
	};

}

#endif